/*
 * FileThread.java
 *
 * Created on 14 de mayo de 2007, 04:56 PM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.src.computec.radar.reclamos.thread;

import com.src.computec.radar.base.source.CoreSource;
import com.src.computec.radar.reclamos.base.constantes.ConstantesGenerales;
import com.src.computec.radar.reclamos.reclamo.dto.ReclamoDto;
import com.src.log4j.logger.custom.XLogger;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author aocampo
 */
public class FileThread implements Runnable {
    
    private static XLogger xLogger;
    public static final int FILE_BITACORA_RECLAMOS = 1;
    private int i;
    private String fileName;
    private List listObjects;
    private int rol = 0;
    
    /** Creates a new instance of FileThread */
    public FileThread(int i, String fileName, List listObjects, int rol) {
        this.xLogger = (XLogger) XLogger.getLogger(this.getClass().getName());
        this.i = i;
        this.fileName = fileName;
        this.listObjects = listObjects;
        this.rol = rol;
    }
    
    public void run() {
        switch (i) {
            case FILE_BITACORA_RECLAMOS: {
                this.createNewFileBitacoraReclamos();
                break;
            }
        }
    }
    
    private void createNewFileBitacoraReclamos() {
        if (listObjects != null && !listObjects.isEmpty()) {
            File file = null;
            FileWriter fileWriter = null;
            try {
                file = new File(ConstantesGenerales.FOLDER_CARGUE_ARCHIVOS + ConstantesGenerales.PATH_ARCHIVOS_ALERTAS + fileName);
                fileWriter = new FileWriter(file);
                fileWriter.write("CODIGO_RECLAMO" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("CODIGO_INTERNO_CLIENTE" + ConstantesGenerales.FILE_SEPARATOR);
                if (rol != ConstantesGenerales.ROL_EMPRESA_MENSAJERIA) {
                    fileWriter.write("ALARMA" + ConstantesGenerales.FILE_SEPARATOR);
                }
                fileWriter.write("NOMBRE_PRIORIDAD" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("DESCRIPCION" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("NOMBRE_TIPO_RECLAMO" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("RAZON_SOCIAL_CLIENTE" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("DESCRIPCION_PRODUCTO" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("CICLO" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("RAZON_SOCIAL_PROVEEDOR" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("NOMBRE_NODO" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("FECHA_GENERACION" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("NOMBRE_ESTADO" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("UID_RESPONSABLE" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("CODIGO_BARRAS" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("NOMBRE_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("DIRECCION_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR);
                fileWriter.write("DEPARTAMENTO / CIUDAD");
                if (rol != ConstantesGenerales.ROL_EMPRESA_MENSAJERIA) {
                    fileWriter.write(ConstantesGenerales.FILE_SEPARATOR + "TELEFONO_DESTINATARIO" + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("TELEFONO_CASA" + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("TELEFONO_OFICINA" + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("EXTENSION" + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("MOVIL" + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write("RESPUESTA" + ConstantesGenerales.CAR_RETURN + ConstantesGenerales.LINE_JUMP);
                }
                else {
                    fileWriter.write(ConstantesGenerales.CAR_RETURN + ConstantesGenerales.LINE_JUMP);
                }
                Iterator iterator = listObjects.iterator();
                while (iterator.hasNext()) {
                    ReclamoDto reclamoDto = (ReclamoDto) iterator.next();
                    fileWriter.write(reclamoDto.getCodigoReclamo() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getCodigoInternoCliente() + ConstantesGenerales.FILE_SEPARATOR);
                    if (rol != ConstantesGenerales.ROL_EMPRESA_MENSAJERIA) {
                        if (reclamoDto.getPathImagenAlarma() != null && !reclamoDto.getPathImagenAlarma().equals("")) {
                            if (reclamoDto.getPathImagenAlarma().equals(CoreSource.getInstance().getUtilidadesSetupKey("whiteBallImg"))) {
                                fileWriter.write("POR ASIGNAR (BLANCO)" + " - " + reclamoDto.getToolTipPathImagenAlarma() + ConstantesGenerales.FILE_SEPARATOR);
                            }
                            else if (reclamoDto.getPathImagenAlarma().equals(CoreSource.getInstance().getUtilidadesSetupKey("greenBallImg"))) {
                                fileWriter.write("CERRADO CLIENTE (VERDE)" + " - " + reclamoDto.getToolTipPathImagenAlarma() + ConstantesGenerales.FILE_SEPARATOR);
                            }
                            else if (reclamoDto.getPathImagenAlarma().equals(CoreSource.getInstance().getUtilidadesSetupKey("greenCrossBallImg"))) {
                                fileWriter.write("CERRADO CLIENTE VENCIDO (VERDE - EQUIZ ROJA)" + " - " + reclamoDto.getToolTipPathImagenAlarma() + ConstantesGenerales.FILE_SEPARATOR);
                            }
                            else if (reclamoDto.getPathImagenAlarma().equals(CoreSource.getInstance().getUtilidadesSetupKey("yellowBallImg"))) {
                                fileWriter.write("ABIERTO (AMARILLO)" + " - " + reclamoDto.getToolTipPathImagenAlarma() + ConstantesGenerales.FILE_SEPARATOR);
                            }
                            else if (reclamoDto.getPathImagenAlarma().equals(CoreSource.getInstance().getUtilidadesSetupKey("orangeBallImg"))) {
                                fileWriter.write("MEDIO TIEMPO TRANSCURRIDO (NARANJA)" + " - " + reclamoDto.getToolTipPathImagenAlarma() + ConstantesGenerales.FILE_SEPARATOR);
                            }
                            else if (reclamoDto.getPathImagenAlarma().equals(CoreSource.getInstance().getUtilidadesSetupKey("redBallImg"))) {
                                fileWriter.write("PROXIMO A VENCER (ROJO)" + " - " + reclamoDto.getToolTipPathImagenAlarma() + ConstantesGenerales.FILE_SEPARATOR);
                            }
                            else if (reclamoDto.getPathImagenAlarma().equals(CoreSource.getInstance().getUtilidadesSetupKey("redCrossBallImg"))) {
                                fileWriter.write("VENCIDO (ROJO - EQUIZ BLANCA)" + " - " + reclamoDto.getToolTipPathImagenAlarma() + ConstantesGenerales.FILE_SEPARATOR);
                            }
                            else if (reclamoDto.getPathImagenAlarma().equals(CoreSource.getInstance().getUtilidadesSetupKey("blackBallImg"))) {
                                fileWriter.write("ALARMA SIN PARAMETRIZACION (NEGRO)" + ConstantesGenerales.FILE_SEPARATOR);
                            }
                        }
                        else {
                            fileWriter.write("" + ConstantesGenerales.FILE_SEPARATOR);
                        }
                    }
                    fileWriter.write(reclamoDto.getNombrePrioridad() + ConstantesGenerales.FILE_SEPARATOR);
                    if (reclamoDto.getDescripcion() != null && !reclamoDto.getDescripcion().equals("")) {
                        fileWriter.write(reclamoDto.getDescripcion().replace(ConstantesGenerales.LINE_JUMP, " ").replace(ConstantesGenerales.CAR_RETURN, "") + ConstantesGenerales.FILE_SEPARATOR);
                    }
                    else {
                        fileWriter.write(reclamoDto.getDescripcion() + ConstantesGenerales.FILE_SEPARATOR);
                    }
                    fileWriter.write(reclamoDto.getNombreTipoReclamo() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getEnvioDto().getRazonSocialCliente() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getEnvioDto().getDescripcionProducto() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getEnvioDto().getCiclo() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getEnvioDto().getRazonSocialProveedor() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getEnvioDto().getNombreNodo() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(ConstantesGenerales.SIMPLE_DATE_FORMAT.format(reclamoDto.getFechaGeneracion()) + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getNombreEstado() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getUidResponsable() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getCodigoBarras() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getEnvioDto().getNombreDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getEnvioDto().getDireccionDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reclamoDto.getEnvioDto().getNombreDepartamento() + " / " + reclamoDto.getEnvioDto().getNombreCentroPoblado());
                    if (rol != ConstantesGenerales.ROL_EMPRESA_MENSAJERIA) {
                        fileWriter.write(ConstantesGenerales.FILE_SEPARATOR + reclamoDto.getEnvioDto().getTelefonoDestinatario() + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(reclamoDto.getTelefonoCasa() + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(reclamoDto.getTelefonoOficina() + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(reclamoDto.getExtension() + ConstantesGenerales.FILE_SEPARATOR);
                        fileWriter.write(reclamoDto.getMovil() + ConstantesGenerales.FILE_SEPARATOR);
                        if (reclamoDto.getRespuesta() != null && !reclamoDto.getRespuesta().equals("")) {
                            fileWriter.write(reclamoDto.getRespuesta().replace(ConstantesGenerales.LINE_JUMP, " ").replace(ConstantesGenerales.CAR_RETURN, "") + ConstantesGenerales.CAR_RETURN + ConstantesGenerales.LINE_JUMP);
                        }
                        else {
                            fileWriter.write(reclamoDto.getRespuesta() + ConstantesGenerales.CAR_RETURN + ConstantesGenerales.LINE_JUMP);
                        }
                    }
                    else {
                        fileWriter.write(ConstantesGenerales.CAR_RETURN + ConstantesGenerales.LINE_JUMP);
                    }
                }
                fileWriter.write(ConstantesGenerales.CAR_RETURN + ConstantesGenerales.LINE_JUMP + "NRO. REGISTROS: " + listObjects.size() + ConstantesGenerales.CAR_RETURN + ConstantesGenerales.LINE_JUMP);
                fileWriter.write("FECHA GENERACION: " + ConstantesGenerales.SIMPLE_DATE_FORMAT.format(new Date()));
            }
            catch (IOException e) {
                xLogger.error("FileThread:createNewFileBitacoraReclamos:", e);
            }
            catch (Exception e) {
                xLogger.error("FileThread:createNewFileBitacoraReclamos:", e);
            }
            finally {
                try {
                    if (fileWriter != null) {
                        fileWriter.close();
                    }
                }
                catch (IOException e) {
                    xLogger.error("FileThread:createNewFileBitacoraReclamos:fileWriterClose:", e);
                }
            }
        }
    }
}